Text Data Preprocessing হল প্রাক-প্রক্রিয়া ধাপ যা মডেলকে টেক্সট ডেটা বিশ্লেষণ এবং প্রক্রিয়া করতে সহায়তা করে। ডীপ লার্নিং মডেলগুলোর জন্য টেক্সট ডেটা সাধারণত সংখ্যা (vectorized format) হিসেবে উপস্থাপন করতে হয়। এই প্রক্রিয়ার মধ্যে Tokenization, Padding, এবং Embedding অত্যন্ত গুরুত্বপূর্ণ। নিচে এই তিনটি ধাপের বিস্তারিত আলোচনা করা হলো।
১. Tokenization (টোকেনাইজেশন)
Tokenization হল একটি প্রক্রিয়া যার মাধ্যমে একটি টেক্সট ডেটাকে ছোট ছোট অংশে (যেমন শব্দ বা বাক্য) ভাগ করা হয়। টোকেন হলো সেই ছোট ছোট অংশ যা মডেলকে প্রক্রিয়া করতে সাহায্য করে। টোকেন হতে পারে শব্দ, চরিত্র বা বাক্য, তবে সাধারণত শব্দ ভিত্তিক টোকেনাইজেশন বেশি ব্যবহৃত হয়।
প্রক্রিয়া:
- একটি স্ট্রিং (টেক্সট) থেকে শব্দ বা বাক্য আলাদা করা।
- স্টপওয়ার্ড (যেমন "is", "the", "at") অপসারণ করা হতে পারে।
- টেক্সটের বিশেষ চরিত্র যেমন পংক্তি পরিবর্তন, কমা, ডট ইত্যাদি পরিষ্কার করা।
উদাহরণ:
from tensorflow.keras.preprocessing.text import Tokenizer
# টেক্সট ডেটা
texts = ["I love machine learning", "Deep learning is fun"]
# Tokenizer তৈরি করা
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
# টোকেনাইজড ডেটা
sequences = tokenizer.texts_to_sequences(texts)
print(sequences)
আউটপুট:
[[1, 2, 3, 4], [5, 3, 6, 7]]
এখানে:
- প্রতিটি শব্দকে একটি সংখ্যা (টোকেন) দ্বারা চিহ্নিত করা হয়েছে।
fit_on_texts()ফাংশনটি টেক্সট ডেটার প্রতিটি শব্দকে একটি সংখ্যা বরাদ্দ করে।texts_to_sequences()ফাংশনটি টেক্সটকে টোকেনাইজড সিকোয়েন্সে পরিণত করে।
২. Padding (প্যাডিং)
Padding হল টেক্সট ডেটার দৈর্ঘ্য সমান করার একটি প্রক্রিয়া, যাতে সমস্ত ইনপুট ডেটা মডেলের জন্য একই আকারে থাকে। বিশেষ করে ইমেজ রিকগনিশন বা টেক্সট রিকগনিশন মডেলগুলোর জন্য, এটি গুরুত্বপূর্ণ, কারণ মডেলটি একটি নির্দিষ্ট আকারের ইনপুট আশা করে।
Padding প্রয়োগ করতে, ইনপুট সিকোয়েন্সের দৈর্ঘ্য কমপ্লিট করা হয় (প্যাড করা হয়) যেন সেগুলির সাইজ সমান হয়।
উদাহরণ:
from tensorflow.keras.preprocessing.sequence import pad_sequences
# টোকেনাইজড সিকোয়েন্স
sequences = [[1, 2, 3, 4], [5, 3, 6, 7], [8, 9]]
# প্যাডিং করা
padded_sequences = pad_sequences(sequences, padding='post')
print(padded_sequences)
আউটপুট:
[[1 2 3 4]
[5 3 6 7]
[8 9 0 0]]
এখানে:
padding='post': প্যাডিং শেষে যুক্ত করা হয়েছে। আপনি চাইলেpadding='pre'ব্যবহার করে প্যাডিং শুরুতে যুক্ত করতে পারেন।- যদি সিকোয়েন্সের দৈর্ঘ্য ছোট হয়, তাহলে সেগুলো 0 দিয়ে পূর্ণ (pad) করা হয়েছে।
৩. Embedding (এম্বেডিং)
Embedding হল একটি টেক্সট রিপ্রেজেন্টেশন কৌশল যা টেক্সট ডেটাকে ঘনিষ্ঠ সংখ্যা ভেক্টর আকারে রূপান্তরিত করে। এটা মূলত শব্দের মধ্যে সম্পর্ক শিখতে সাহায্য করে। Word Embedding একটি জনপ্রিয় টেকনিক, যেখানে প্রতিটি শব্দকে একটি কন্টিনিউয়াস ভেক্টরে রূপান্তর করা হয়।
Keras তে Embedding Layer ব্যবহার করে টেক্সট ডেটাকে একটি ভেক্টর আকারে রূপান্তর করা হয়।
উদাহরণ:
from tensorflow.keras.layers import Embedding
import numpy as np
# সিকোয়েন্স টোকেন
sequences = [[1, 2, 3, 4], [5, 3, 6, 7], [8, 9]]
# এমবেডিং লেয়ার
embedding = Embedding(input_dim=10, output_dim=8, input_length=4)
embedding_output = embedding(np.array(sequences))
print(embedding_output)
এখানে:
input_dim=10: শব্দের ভোকাবুলারি সাইজ (শব্দের মোট সংখ্যা)।output_dim=8: প্রতিটি শব্দের জন্য আউটপুট ভেক্টর সাইজ (অথবা এমবেডিং ডাইমেনশন)।input_length=4: ইনপুট সিকোয়েন্সের দৈর্ঘ্য (এখানে সিকোয়েন্সের সর্বোচ্চ দৈর্ঘ্য 4)।
Embedding Layer সাধারণত টেক্সট ডেটার ভেক্টর রিপ্রেজেন্টেশন তৈরি করতে ব্যবহৃত হয়, এবং এটি ডীপ লার্নিং মডেলের জন্য প্রশিক্ষিত হতে পারে।
সারাংশ
- Tokenization: টেক্সট ডেটাকে ছোট ছোট অংশে (শব্দ বা বাক্য) ভাগ করা। এটি মডেলকে ডেটা প্রক্রিয়া করতে সহায়তা করে।
- Padding: সিকোয়েন্সের দৈর্ঘ্য সমান করতে প্যাডিং ব্যবহার করা হয়, যাতে ইনপুট ডেটার আকার একই থাকে।
- Embedding: টেক্সট ডেটাকে ঘনিষ্ঠ সংখ্যা ভেক্টরে রূপান্তর করা, যাতে মডেল শব্দের মধ্যে সম্পর্ক শিখতে পারে।
এই তিনটি ধাপ একত্রে ব্যবহার করা হলে, আপনি খুব সহজেই টেক্সট ডেটাকে মডেল প্রশিক্ষণের জন্য প্রস্তুত করতে পারেন।
Read more